/// 三消费者
///
/// @since 2.3
///
/// 在Rust中，函数式接口可以用trait来表示。这里定义了一个接受三个参数的trait。
/// rust trait 接口不能被其他模块引用！
pub trait TriConsumer<T, U, X> {
    /// 接受三个参数的方法
    fn accept(&self, t: T, u: U, x: X);
}

// /// 使用闭包实现TriConsumer trait
// impl<F, T, U, X> TriConsumer<T, U, X> for F
// where
//     F: Fn(T, U, X),
// {
//     fn accept(&self, t: T, u: U, x: X) {
//         self(t, u, x)
//     }
// }
//
// #[cfg(test)]
// mod tests {
//     use super::*;
//
//     #[test]
//     fn test_tri_consumer() {
//         // 使用闭包创建一个TriConsumer实例
//         let tri_consumer = |a: i32, b: i32, c: i32| {
//             println!("a: {}, b: {}, c: {}", a, b, c);
//         };
//
//         // 测试TriConsumer
//         tri_consumer.accept(1, 2, 3);
//     }
// }
